/**
 * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
 * This file is a part of the CANN Open Software.
 * Licensed under CANN Open Software License Agreement Version 2.0 (the "License").
 * Please refer to the License for details. You may not use this file except in compliance with the License.
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
 * See LICENSE in the root of the software repository for the full text of the License.
 */

/* !
 * \file quant_batch_matmul_v3_tiling_key.h
 * \brief
 */

#ifndef QUANT_BATCH_MATMUL_V3_TILING_KEY_H
#define QUANT_BATCH_MATMUL_V3_TILING_KEY_H

#include "ascendc/host_api/tiling/template_argument.h"

#define QUANT_BATCH_MATMUL_V3_NOT_TRANS 0
#define QUANT_BATCH_MATMUL_V3_B_TRANS 1
#define QUANT_BATCH_MATMUL_V3_A_TRANS 2
#define QUANT_BATCH_MATMUL_V3_ALL_TRANS 3

#define QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE 0
#define QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_BASIC 1
#define QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_OPT 2

#define QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN 0
#define QUANT_BATCH_MATMUL_V3_IS_PERTOKEN 1

#define QUANT_BATCH_MATMUL_V3_OPTION_ATTR_NONE 0
#define QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN 1
#define QUANT_BATCH_MATMUL_V3_IS_AICAIV_1_2 2

#define SET_NOT_PERTOKEN_ATTR_NONE                                                                                 \
            ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),               \
            ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_OPTION_ATTR_NONE),

#define SET_CUBE_ONLY_ATTR_NONE(trans, kernel_template_type, pertoken)                                                         \
            ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_AIC_ONLY),                                                                    \
            ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, trans),                                    \
            ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_##kernel_template_type),      \
            ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_##pertoken),               \
            ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_OPTION_ATTR_NONE),      

#define SET_CV11_ATTR_NONE(trans, kernel_template_type, pertoken)                                                         \
            ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_1),                                                                    \
            ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, trans),                                    \
            ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_##kernel_template_type),      \
            ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_##pertoken),               \
            ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_OPTION_ATTR_NONE),      


ASCENDC_TPL_ARGS_DECL(
    QuantBatchMatmulV3,
    ASCENDC_TPL_UINT_DECL(
        TRANS, ASCENDC_TPL_2_BW, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_TRANS, QUANT_BATCH_MATMUL_V3_B_TRANS, QUANT_BATCH_MATMUL_V3_A_TRANS, QUANT_BATCH_MATMUL_V3_ALL_TRANS),
    ASCENDC_TPL_UINT_DECL(
        KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_2_BW, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_BASIC, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_OPT),
    ASCENDC_TPL_UINT_DECL(
        PERTOKEN, ASCENDC_TPL_1_BW, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN, QUANT_BATCH_MATMUL_V3_IS_PERTOKEN),
    ASCENDC_TPL_UINT_DECL(
        OPTION_ATTRS, ASCENDC_TPL_2_BW, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_OPTION_ATTR_NONE, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN, QUANT_BATCH_MATMUL_V3_IS_AICAIV_1_2), );

ASCENDC_TPL_SEL(
#if defined(__CCE_AICORE__)
// 6bit from hight to low: needClean, pertoken, opt, basic, transX1, transX2
#if (ORIG_DTYPE_Y == DT_FLOAT16 || ORIG_DTYPE_Y == DT_INT8 || ORIG_DTYPE_Y == DT_INT32)  // fp16, int8, int32
#if (ORIG_DTYPE_SCALE != DT_FLOAT || ORIG_DTYPE_Y == DT_INT32)
#if defined(__CCE_AICORE__) && __CCE_AICORE__ == 200
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_B_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_OPTION_ATTR_NONE), ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_B_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN), ),
#endif
#endif
#if defined(__CCE_AICORE__) && __CCE_AICORE__ == 220
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, TBE, NOT_PERTOKEN),),
#if (ORIG_DTYPE_SCALE != DT_FLOAT || ORIG_DTYPE_Y == DT_INT32)
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, TBE, NOT_PERTOKEN)),
#if ORIG_DTYPE_Y == DT_INT32
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_0),
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN), ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_0),
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_A_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN), ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_0),
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_B_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN), ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_0),
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_ALL_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN), ), 
#endif
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, BASIC, NOT_PERTOKEN)),
#else
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, TBE, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, TBE, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, TBE, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, TBE, IS_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, OPT, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, OPT, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, OPT, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, OPT, IS_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, BASIC, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, BASIC, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, BASIC, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, BASIC, IS_PERTOKEN)),
#endif
#endif
#else  //  bf16
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_2),
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_BASIC),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_IS_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_IS_AICAIV_1_2), ),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, TBE, NOT_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, OPT, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, OPT, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, OPT, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, OPT, NOT_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, BASIC, NOT_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, TBE, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, TBE, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, TBE, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, TBE, IS_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, OPT, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, OPT, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, OPT, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, OPT, IS_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, BASIC, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, BASIC, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, BASIC, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, BASIC, IS_PERTOKEN)),
#endif
#else  // compile tiling only
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, TBE, NOT_PERTOKEN)), 
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_B_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN), ),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_0),
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN), ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_0),
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_A_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN), ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_0),
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_B_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN), ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_0),
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_ALL_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_TBE),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NEED_ATOMICLEAN), ),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CUBE_ONLY_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_KERNEL_TYPE_SEL(ASCENDC_TPL_MIX_AIC_1_2),
        ASCENDC_TPL_UINT_SEL(TRANS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_NOT_TRANS),
        ASCENDC_TPL_UINT_SEL(KERNEL_TEMPLATE_TYPE, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUl_V3_KERNEL_TEMPLATE_TYPE_BASIC),
        ASCENDC_TPL_UINT_SEL(PERTOKEN, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_IS_PERTOKEN),
        ASCENDC_TPL_UINT_SEL(OPTION_ATTRS, ASCENDC_TPL_UI_LIST, QUANT_BATCH_MATMUL_V3_IS_AICAIV_1_2), ),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, TBE, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, TBE, NOT_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, OPT, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, OPT, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, OPT, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, OPT, NOT_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, BASIC, NOT_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, BASIC, NOT_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, TBE, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, TBE, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, TBE, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, TBE, IS_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, OPT, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, OPT, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, OPT, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, OPT, IS_PERTOKEN)),

    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_NOT_TRANS, BASIC, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_A_TRANS, BASIC, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_B_TRANS, BASIC, IS_PERTOKEN)),
    ASCENDC_TPL_ARGS_SEL(SET_CV11_ATTR_NONE(QUANT_BATCH_MATMUL_V3_ALL_TRANS, BASIC, IS_PERTOKEN)),
#endif
);
#endif // QUANT_BATCH_MATMUL_V4_TILING_KEY_H